package users

import (
	"yundian/internel/app/models/roles"
	"yundian/internel/pkg/dingo"
	"yundian/internel/pkg/dingo/result"
)

// UserModel 用户表模型
type UserModel struct {
	ID       int   `gorm:"column:id" json:"id"`
	ParentID int   `gorm:"column:parent_id" json:"parentId"`
	RoleID   int   `gorm:"column:role_id" json:"roleId"`
	IsAdmin  uint8 `gorm:"column:is_admin" json:"isAdmin"` // 1管理员 2:运营商 3:代理商 4:商户 5:员工

	Openid   string `gorm:"column:openid" json:"openid"` // 公众号openid
	Password string `gorm:"column:password" json:"-"`

	Name      string `gorm:"column:name" json:"name"`
	UserName  string `gorm:"column:user_name" json:"userName"`
	NickName  string `gorm:"column:nick_name" json:"nickName"`
	Sex       int    `gorm:"column:sex" json:"sex"` // 1男 2 女
	Phone     string `gorm:"column:phone" json:"phone"`
	PhoneCode string `gorm:"column:phone_code" json:"phoneCode"`
	Avatar    string `gorm:"column:avatar" json:"avatar"`
	Country   string `gorm:"column:country" json:"-"`         // 用户所在国家
	Province  string `gorm:"column:province" json:"provence"` // 用户所在省份
	City      string `gorm:"column:city" json:"city"`         // 用户所在城市
	County    string `gorm:"column:county" json:"county"`     // 用户所在城市
	RegionIds string `gorm:"column:region_ids" json:"regionIds"`
	Address   string `gorm:"column:address" json:"-"` // 用户所在城市

	ProfitType         int `gorm:"column:profit_type" json:"profitType"`
	ProfitIsVisible    int `gorm:"column:profit_is_visible" json:"profitIsVisible"`
	OrderIsVisible     int `gorm:"column:order_is_visible" json:"orderIsVisible"`
	IncomeIsVisible    int `gorm:"column:income_is_visible" json:"incomeIsVisible"`
	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	AgentChildCount int `gorm:"column:agent_child_count" json:"agentChildCount"`
	PlaceCount      int `gorm:"column:place_count" json:"placeCount"`
	DeviceCount     int `gorm:"column:device_count" json:"deviceCount"`
	AgentCount      int `gorm:"column:agent_count" json:"agentCount"`
	LoginCount      int `gorm:"column:login_count" json:"loginCount"`

	Status    uint8 `gorm:"column:status" json:"status"`
	IsDelete  uint8 `gorm:"column:is_delete" json:"-"`
	IsPlace   uint8 `gorm:"column:is_place" json:"isPlace"` // 代理商用户:0  网点用户:1 分公司用户:3
	IsDraw    uint8 `gorm:"column:is_draw" json:"isDraw"`   //  是否开启抽单
	IsCash    uint8 `gorm:"column:is_cash" json:"isCash"`   //  是否开启提现
	IsBind    uint8 `gorm:"column:is_bind" json:"isBind"`
	IsKa      uint8 `gorm:"column:is_ka" json:"isKa"`
	IsSteward uint8 `gorm:"column:is_steward" json:"isSteward"`

	WxIncomeQrcode string `gorm:"column:wx_income_qrcode" json:"wxIncomeQrcode,omitempty"` // 微信收款二维码地址

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"`
	DeleteAt dingo.Time `gorm:"column:delete_at" json:"-"`

	WxName     string `gorm:"column:wx_name" json:"wxName"`
	WxMobile   string `gorm:"column:wx_mobile" json:"wxMobile"`
	Unionid    string `gorm:"column:unionid" json:"unionid"`
	UserNo     string `gorm:"column:user_no" json:"userNo"` // 用户编号（合伙人：HH+时间戳 代理：DL+时间戳 商户：SH+时间戳）
	RealProfit int    `gorm:"-" json:"realProfit"`

	TaxRate         uint8   `gorm:"tax_rate" json:"taxRate"`                  // 税率
	TaxRateRoom     float32 `gorm:"tax_rate_room" json:"taxRateRoom"`         // 税率
	TaxRateGoods    float32 `gorm:"tax_rate_goods" json:"taxRateGoods"`       // 税率
	TaxRateAutomate float32 `gorm:"tax_rate_automate" json:"taxRateAutomate"` // 税率

	BranchUserId int `gorm:"column:branch_user_id" json:"branchUserId"`

	IsDivinds     uint8  `gorm:"column:is_divinds" json:"isDivinds"` // 是否参与分红 1参与 2不参与
	IsDividendsSm uint8  `gorm:"column:is_dividends_sm" json:"isDividendsSm"`
	UserLevel     string `gorm:"column:user_level" json:"userLevel"` // 用户等级、项目类型 agent 代理商 ka KA branch 分公司 direct 直营 bd bd

	Module string `gorm:"column:module" json:"module"`       // 可访问的功能模块
	Platform string `gorm:"column:platform" json:"platform"` // 所属平台
	ZfbOpenid string `gorm:"column:zfb_openid" json:"zfbOpenid"`
}

type UserIds struct {
	ID int `gorm:"column:id" json:"id"`
}

type AdminUser struct {
	UserModel
	RoleName string `gorm:"role_name" json:"roleName"`
}

type UserProfileWithPlace struct {
	ID       int   `gorm:"column:id" json:"id"`
	ParentID int   `gorm:"column:parent_id" json:"parentId"`
	RoleID   int   `gorm:"column:role_id" json:"roleId"`
	IsAdmin  uint8 `gorm:"column:is_admin" json:"isAdmin"` // 1管理员 2:运营商 3:代理商 4:商户 5:员工

	Phone    string `gorm:"column:phone" json:"phone"`
	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`

	IsPlace uint8 `gorm:"column:is_place" json:"isPlace"`
	IsDraw  uint8 `gorm:"column:is_draw" json:"isDraw"` //  是否开启抽单
	IsCash  uint8 `gorm:"column:is_cash" json:"isCash"` //  是否开启提现

	UserNo       string `gorm:"column:user_no" json:"userNo"`              // 用户编号（合伙人：HH+时间戳 代理：DL+时间戳 商户：SH+时间戳）
	BranchUserId int    `gorm:"column:branch_user_id" json:"branchUserId"` // 分公司ID
}

// 登录-用户信息
type UserInfoWithLogin struct {
	Id       int                  `gorm:"column:id" json:"id"`              // ID
	Name     string               `gorm:"column:name" json:"name"`          // 名称-姓名
	UserName string               `gorm:"column:user_name" json:"userName"` //登录用户名
	IsAdmin  uint8                `gorm:"column:is_admin" json:"isAdmin"`   // 是否为管理员
	Avatar   string               `gorm:"column:avatar" json:"avatar"`      // 头像
	Status   uint8                `gorm:"column:status" json:"status"`      // 状态
	Sex      uint8                `gorm:"column:sex" json:"sex"`            // 性别
	Phone    string               `gorm:"column:phone" json:"phone"`        // 电话
	RoleId   int                  `gorm:"column:role_id" json:"roleId"`     // 所属角色
	RoleName string               `gorm:"column:role_name" json:"roleName"`
	Role     *roles.RoleWithLogin `gorm:"-" json:"role"`
	IsPlace  uint8                `gorm:"column:is_place" json:"isPlace"`
	IsDraw   uint8                `gorm:"column:is_draw" json:"isDraw"`
	IsCash   uint8                `gorm:"column:is_cash" json:"isCash"` //  是否开启提现
	IsKa     uint8                `gorm:"column:is_ka" json:"isKa"`     // 是否大客户
	ParentID int                  `gorm:"column:parent_id" json:"parentId"`
	TaxRate  uint8                `gorm:"tax_rate" json:"taxRate"` // 税率

	IsBind uint8 `gorm:"column:is_bind" json:"isBind"`

	ProfitIsVisible    int `gorm:"column:profit_is_visible" json:"profitIsVisible"`
	OrderIsVisible     int `gorm:"column:order_is_visible" json:"orderIsVisible"`
	IncomeIsVisible    int `gorm:"column:income_is_visible" json:"incomeIsVisible"`
	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	Module     string         `gorm:"column:module" json:"module"`
	TabList    result.TabList `gorm:"-" json:"tabList"`
	ParentInfo interface{}    `gorm:"-" json:"parentInfo"`
}

type AgentInfo struct {
	ID       int        `gorm:"column:id" json:"id"`
	Name     string     `gorm:"column:name" json:"name"`
	UserName string     `gorm:"column:user_name" json:"userName"`
	Phone    string     `gorm:"column:phone" json:"phone"`
	UserNo   string     `gorm:"column:user_no" json:"userNo"` // 用户编号（合伙人：HH+时间戳 代理：DL+时间戳 商户：SH+时间戳）
	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
}

type AgentCancelPlaceInfo struct {
	ID       int        `gorm:"column:id" json:"id"`
	Name     string     `gorm:"column:name" json:"name"`
	UserName string     `gorm:"column:user_name" json:"userName"`
	Phone    string     `gorm:"column:phone" json:"phone"`
	UserNo   string     `gorm:"column:user_no" json:"userNo"` // 用户编号（合伙人：HH+时间戳 代理：DL+时间戳 商户：SH+时间戳）
	ISPlace  uint8      `gorm:"column:is_place" json:"isPlace"`
	IsAdmin  uint8      `gorm:"column:is_admin" json:"isAdmin"` // 是否为管理员
	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
}

// 代理商列表
type UserInfoWithAgent struct {
	ID         int    `gorm:"column:id" json:"id"`
	ParentId   int    `gorm:"column:parent_id" json:"parentId"`
	ParentName string `gorm:"column:parent_name" json:"parentName"`

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`
	RoleName string `gorm:"column:role_name" json:"roleName"`
	Phone    string `gorm:"column:phone" json:"phone"`
	UserNo   string `gorm:"column:user_no" json:"userNo"`

	ProfitType         int `gorm:"column:profit_type" json:"profitType"`
	ProfitIsVisible    int `gorm:"column:profit_is_visible" json:"profitIsVisible"`
	OrderIsVisible     int `gorm:"column:order_is_visible" json:"orderIsVisible"`
	IncomeIsVisible    int `gorm:"column:income_is_visible" json:"incomeIsVisible"`
	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	Province  string `gorm:"column:province" json:"provence"` // 用户所在省份
	City      string `gorm:"column:city" json:"city"`         // 用户所在城市
	County    string `gorm:"column:county" json:"county"`     // 用户所在城市
	RegionIds string `gorm:"column:region_ids" json:"regionIds"`

	//AgentChildCount int `gorm:"column:agent_child_count" json:"agentChildCount"`
	//PlaceCount      int `gorm:"column:place_count" json:"placeCount"`
	//DeviceCount     int `gorm:"column:device_count" json:"deviceCount"`
	//AgentCount      int `gorm:"column:agent_count" json:"agentCount"`
	//LoginCount      int `gorm:"column:login_count" json:"loginCount"`

	Status uint8 `gorm:"column:status" json:"status"`

	LastLoginIp     string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime   dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`
	CreateAt        dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt        dingo.Time `gorm:"column:update_at" json:"updateAt"`
	RoleID          int        `gorm:"column:role_id" json:"roleId"`
	IsAdmin         uint8      `gorm:"column:is_admin" json:"isAdmin"`
	IsPlace         uint8      `gorm:"column:is_place" json:"isPlace"`
	IsDraw          uint8      `gorm:"column:is_draw" json:"isDraw"`
	IsCash          uint8      `gorm:"column:is_cash" json:"isCash"`                //  是否开启提现
	IsDivinds       uint8      `gorm:"column:is_divinds" json:"isDivinds"`          // 是否参与分红 1参与 2不参与
	IsDividendsSm   uint8      `gorm:"column:is_dividends_sm" json:"isDividendsSm"` // 是否参与分红 1参与 2不参与
	IsSteward       uint8      `gorm:"column:is_steward" json:"isSteward"`          // 是否开启2.0服务
	UserLevel       string     `gorm:"column:user_level" json:"userLevel"`
	TaxRate         uint8      `gorm:"tax_rate" json:"taxRate"`
	TaxRateRoom     float32    `gorm:"tax_rate_room" json:"taxRateRoom"`
	TaxRateGoods    float32    `gorm:"tax_rate_goods" json:"taxRateGoods"`
	TaxRateAutomate float32    `gorm:"tax_rate_automate" json:"taxRateAutomate"`

	Children []*UserInfoWithAgent `gorm:"-" json:"children"`
	//ChildrenPlace []*UserInfoWithPlace `gorm:"-" json:"childrenPlace"`
	//H5参数
	PlaceChildNum int `gorm:"-" json:"placeChildNum"`

	Module string `gorm:"column:module" json:"module"`
	Platform string `gorm:"column:platform" json:"platform"`
}

// 商户列表
type UserInfoWithPlace struct {
	ID         int    `gorm:"column:id" json:"id"`
	ParentId   int    `gorm:"column:parent_id" json:"parentId"`
	ParentName string `gorm:"column:parent_name" json:"parentName"`

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`
	RoleName string `gorm:"column:role_name" json:"roleName"`
	Phone    string `gorm:"column:phone" json:"phone"`
	UserNo   string `gorm:"column:user_no" json:"userNo"`

	ProfitType         int `gorm:"column:profit_type" json:"profitType"`
	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	Status uint8 `gorm:"column:status" json:"status"`

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`
	CreateAt      dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt      dingo.Time `gorm:"column:update_at" json:"updateAt"`
	RoleID        int        `gorm:"column:role_id" json:"roleId"`
	IsAdmin       uint8      `gorm:"column:is_admin" json:"isAdmin"`
	IsPlace       uint8      `gorm:"column:is_place" json:"isPlace"`
	IsDraw        uint8      `gorm:"column:is_draw" json:"isDraw"`
	IsCash        uint8      `gorm:"column:is_cash" json:"isCash"`              //  是否开启提现
	BranchUserId  int        `gorm:"column:branch_user_id" json:"branchUserId"` // 分公司ID

	Children []*UserInfoWithPlace `gorm:"-" json:"children"`
}

// 员工列表
type UserInfoWithStaff struct {
	ID        int    `gorm:"column:id" json:"id"`
	RoleID    int    `gorm:"column:role_id" json:"roleId"`
	Name      string `gorm:"column:name" json:"name"`
	Phone     string `gorm:"column:phone" json:"phone"`
	PhoneCode string `gorm:"column:phone_code" json:"phoneCode"`
	Status    uint8  `gorm:"column:status" json:"status"`
	RoleName  string `gorm:"column:role_name" json:"roleName"`

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"`
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"`
}

type UserInfoWithKA struct {
	ID int `gorm:"column:id" json:"id"`

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`
	Phone    string `gorm:"column:phone" json:"phone"`
	UserNo   string `gorm:"column:user_no" json:"userNo"`
	RoleName string `gorm:"column:role_name" json:"roleName"`

	ProfitType         int `gorm:"column:profit_type" json:"profitType"`
	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	Status uint8 `gorm:"column:status" json:"status"`

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"`
	RoleID   int        `gorm:"column:role_id" json:"roleId"`
	IsAdmin  uint8      `gorm:"column:is_admin" json:"isAdmin"` // 1管理员 2:运营商 3:代理商、商户 4:员工 5:投资商
	IsPlace  uint8      `gorm:"column:is_place" json:"isPlace"`
	IsDraw   uint8      `gorm:"column:is_draw" json:"isDraw"`

	Children []*UserInfoWithKA `gorm:"-" json:"children"`
}

type UserInfoResult struct {
	UserId   int
	UserName string
	IsAdmin  int
}

func New() *UserModel {
	return &UserModel{}
}

func (model *UserModel) Mutate(attrs ...UserAttr) *UserModel {
	UserAttrs(attrs).Apply(model)
	return model
}

func (model *UserModel) GetTableName() string {
	return "users"
}

// 价格表模型
type Price struct {
	ID                 int    `gorm:"column:id" json:"id"`
	UserId             int    `gorm:"column:user_id" json:"userId"`
	PlaceId            int    `gorm:"column:place_id" json:"placeId"`
	SettlementMoney    int    `gorm:"column:settlement_money" json:"settlementMoney"` // 结算金额
	SettlementMoneyStr string `gorm:"column:settlement_money_str" json:"settlementMoneyStr"`
	CashMoney          int    `gorm:"column:cash_money" json:"cashMoney"` // 提现金额
	CashMoneyStr       string `gorm:"column:cash_money_str" json:"cashMoneyStr"`
}

// 之前有地方在用暂时不改
type UserInfoPlaceId struct {
	UserModel
	PlaceId   int    `gorm:"column:place_id" json:"placeId"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 网点名
}

type UserNoByPlaceIds struct {
	UserNo  string `gorm:"column:user_no" json:"userNo"`
	PlaceId int    `gorm:"column:id" json:"id"` // 网点名
}

type GetAgentChild struct {
	Id       int `gorm:"column:id" json:"id"`
	ParentId int `gorm:"column:parent_id" json:"parentId"`
}

type GetPlaceChild struct {
	Num    int `gorm:"column:num" json:"num"`
	UserId int `gorm:"column:user_id" json:"userId"`
}

type AgentDividendsModel struct {
	UserMoney int64 `gorm:"column:user_money" json:"user_money"`
	UserId    int   `gorm:"column:user_id" json:"userId"`
}

type AgentUserIsDraw struct {
	UsersId int `gorm:"column:id" json:"userId"`
	IsDraw  int `gorm:"column:is_draw" json:"isDraw"`
}

type AgentSettlementMoney struct {
	UserMoney int64  `gorm:"column:user_money" json:"user_money"`
	Date      string `gorm:"column:date" json:"date"`
	UserId    int    `gorm:"column:user_id" json:"userId"`
}

type AgentTotalOrder struct {
	TotalOrder int64  `gorm:"column:total_order" json:"totalOrder"`
	Date       string `gorm:"column:date" json:"date"`
	UserId     int    `gorm:"column:user_id" json:"userId"`
}

type ScanCodeUser struct {
	TotalUser int64  `gorm:"column:total_user" json:"totalUser"`
	Date      string `gorm:"column:date" json:"date"`
	PlaceId   int    `gorm:"column:place_id" json:"placeId"`
}

type ExtSignUsers struct {
	UserId           int    `gorm:"column:user_id" json:"userId"` //绑定用户Id
	UserName         string `gorm:"column:user_name" json:"userName"`
	Phone            string `gorm:"column:phone" json:"phone"`
	ProfitProportion int    `gorm:"column:profit_proportion" json:"profitProportion"`

	OpenId          string     `gorm:"column:openid" json:"openId"`                     //法大大用户标识
	AccountType     string     `gorm:"column:account_type" json:"accountType"`          //1:个人 2:企业
	CustomerId      string     `gorm:"column:customer_id" json:"customerId"`            //customer_id客户编号是用户在法大大的唯一标识。
	TransactionNo   string     `gorm:"column:transaction_no" json:"transactionNo"`      //交易号（需要保存，用于证书申请和实名认证查询）
	IsExt           uint8      `gorm:"column:is_ext" json:"isExt"`                      //是否实名 0未认证 1 已认证
	ContractId      string     `gorm:"column:contract_id" json:"contract_id"`           //文件编号
	DocTitle        string     `gorm:"column:doc_title" json:"doc_title"`               //合同标题
	CreateAt        dingo.Time `gorm:"column:create_at" json:"createAt"`                //创建时间
	SignedAt        dingo.Time `gorm:"column:signed_at" json:"signedAt"`                //签署时间
	IsSigned        int        `gorm:"column:is_signed" json:"isSigned"`                //是否签署 1未签署 2 已签署
	SignContractUrl string     `gorm:"column:sign_contract_url" json:"signContractUrl"` //签署合同地址
}

//会员地址
type MemberAddress struct {
	ID           int    `gorm:"column:id" json:"id"`
	MemberId     int    `gorm:"column:member_id" json:"memberId"`         //会员ID
	Name         string `gorm:"column:name" json:"name"`                  //联系人
	Phone        string `gorm:"column:phone" json:"phone"`                //联系电话
	Postcode     string `gorm:"column:postcode" json:"postcode"`          //邮编
	ProvinceCode string `gorm:"column:province_code" json:"provinceCode"` //省编码
	CityCode     string `gorm:"column:city_code" json:"cityCode"`         //市编码
	CountyCode   string `gorm:"column:county_code" json:"countyCode"`     //区编码
	ProvinceName string `gorm:"column:province_name" json:"provinceName"` //省名称
	CityName     string `gorm:"column:city_name" json:"cityName"`         //市名称
	CountyName   string `gorm:"column:county_name" json:"countyName"`     //区名称
	Address      string `gorm:"column:address" json:"address"`            //详细地址
	CreateTime   string `gorm:"column:create_time" json:"createTime"`     //创建时间
	UpdateTime   string `gorm:"column:update_time" json:"updateTime"`     //更新时间

}

//加盟登记
type CooperationRegister struct {
	ID               int    `gorm:"column:id" json:"id"`
	Name             string `gorm:"column:name" json:"name"`
	UserId           int    `gorm:"column:user_id" json:"userId"` //绑定用户Id
	UserName         string `gorm:"column:user_name" json:"userName"`
	Phone            string `gorm:"column:phone" json:"phone"`
	IsAdmin          uint8  `gorm:"column:is_admin" json:"isAdmin"`                   //合作方式
	Budget           int64  `gorm:"column:budget" json:"budget"`                      //投资预算
	InvestmentRegion string `gorm:"column:investment_region" json:"investmentRegion"` //投资区域
	IsCompany        uint8  `gorm:"column:is_company" json:"isCompany"`               //是否为企业单位。1 企业 2个人
	CooperationType  uint8  `gorm:"column:cooperation_type" json:"cooperationType"`   //合作类型 1 合作商模式 2门店模式
	CreateAt         string `gorm:"column:create_at" json:"createAt"`                 //创建时间
	Message          string `gorm:"column:message" json:"message"`                    //备注
}

type OperatingInternal struct {
	UserId                    int     `gorm:"column:user_id" json:"userId"` //绑定用户Id
	UserName                  string  `gorm:"column:user_name" json:"userName"`
	Phone                     string  `gorm:"column:phone" json:"phone"`
	IsAdmin                   uint8   `gorm:"column:is_admin" json:"isAdmin"`
	PlaceTotal                int64   `gorm:"column:place_total" json:"placeTotal"`                                 //网点数
	DeviceTotal               int64   `gorm:"column:device_total" json:"deviceTotal"`                               //设备数
	NotIncomePlace            int64   `gorm:"column:not_income_place" json:"notIncomePlace"`                        //没有收入的网点
	NotIncomeDevice           int64   `gorm:"column:not_income_device" json:"notIncomeDevice"`                      //没有收入的设备
	NotIncomePlaceProbability float32 `gorm:"column:not_income_place_probability" json:"notIncomePlaceProbability"` //没有收入网点率
	DeviceProbability         float32 `gorm:"column:device_probability" json:"deviceProbability"`                   //单线充电均价
	Money                     int64   `gorm:"column:money" json:"money"`                                            //流水金额
	StatisticsDate            string  `gorm:"column:statistics_date" json:"statisticsDate"`                         //流水金额
}

type UserChangeField struct {
	ID       int   `gorm:"column:id" json:"id"`
	ParentID int   `gorm:"column:parent_id" json:"parentId"`
	RoleID   int   `gorm:"column:role_id" json:"roleId"`
	IsAdmin  uint8 `gorm:"column:is_admin" json:"isAdmin"` // 1管理员 2:运营商 3:代理商 4:商户 5:员工

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`

	Phone string `gorm:"column:phone" json:"phone"`

	ProfitProportion int `gorm:"column:profit_proportion" json:"profitProportion"`

	IsDraw    uint8 `gorm:"column:is_draw" json:"isDraw"`       //  是否开启抽单
	IsCash    uint8 `gorm:"column:is_cash" json:"isCash"`       //  是否开启提现
	IsDivinds uint8 `gorm:"column:is_divinds" json:"isDivinds"` // 是否参与分红 1参与 2不参与

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"`

	ParentName     string `gorm:"-" json:"parentName"`
	ParentUserName string `gorm:"-" json:"parentUserName"`
	RoleName       string `gorm:"-" json:"roleName"`
}

type AgentUserList struct {
	ID       int   `gorm:"column:id" json:"id"`
	ParentID int   `gorm:"column:parent_id" json:"parentId"`
	RoleID   int   `gorm:"column:role_id" json:"roleId"`
	IsAdmin  uint8 `gorm:"column:is_admin" json:"isAdmin"` // 1管理员 2:运营商 3:代理商 4:商户 5:员工

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`
}

type InviteConfigModel struct {
	InviteConfigDb
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}
type InviteConfigDb struct {
	ID              int   `gorm:"column:id" json:"id"`
	UserId          int   `gorm:"column:user_id" json:"userId"`
	UserProportion  int   `gorm:"column:user_proportion" json:"userProportion"`
	BelowProportion int   `gorm:"column:below_proportion" json:"belowProportion"`
	IsAdmin         uint8 `gorm:"column:is_admin" json:"isAdmin"`
}

func (m *InviteConfigDb) TableName() string {
	return "users_invite_config"
}

type InviteRecordModel struct {
	InviteRecordDb
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}
type InviteRecordDb struct {
	ID       int    `gorm:"column:id" json:"id"`
	ParentId int    `gorm:"column:parent_id" json:"parentId"`
	UserId   int    `gorm:"column:user_id" json:"userId"`
	InviteId int    `gorm:"column:invite_id" json:"inviteId"`
	Name     string `gorm:"column:name" json:"name"`
	Phone    string `gorm:"column:phone" json:"phone"`
}

func (m *InviteRecordDb) TableName() string {
	return "users_invite_record"
}


type WifiUser struct {
	ID       int   `gorm:"column:id" json:"id"`
	UserId   int   `gorm:"column:user_id" json:"userId"` // 用户ID
	MemberId int   `gorm:"column:member_id" json:"memberId"` // 会员ID
	IsAdmin  uint8 `gorm:"column:is_admin" json:"isAdmin"` // 3商户 8团长 9拓展员

	ProfitProportion   int `gorm:"column:profit_proportion" json:"profitProportion"` // 分成
	ParentId int    `gorm:"column:parent_id" json:"parentId"`

	IsDivinds     uint8  `gorm:"column:is_divinds" json:"isDivinds"` // 是否参与分红 1参与 2不参与
}

type WifiUserDetail struct {
	WifiUser
	Name     string `gorm:"column:name" json:"name"`
	UserName     string `gorm:"column:user_name" json:"userName"`
	Platform string `gorm:"column:platform" json:"platform"` // 所属平台
	Headimgurl    string     `gorm:"column:headimgurl" json:"avatar"` // 头像
	NickName      string     `gorm:"column:nick_name" json:"nickName"`    // 昵称
}

type WifiUserDb struct {
	ID               int   `gorm:"column:id" json:"id"`
	UserId           int   `gorm:"column:user_id" json:"userId"`
	MemberId         int   `gorm:"column:member_id" json:"memberId"`
	ParentId         int   `gorm:"column:parent_id" json:"parentId"`
	ProfitProportion int   `gorm:"column:profit_proportion" json:"profitProportion"`
	IsAdmin          uint8 `gorm:"column:is_admin" json:"isAdmin"`
	IsDivinds     uint8  `gorm:"column:is_divinds" json:"isDivinds"` // 是否参与分红 1参与 2不参与
}

func (m *WifiUserDb) TableName() string {
	return "wifi_user"
}

type WifiUserListWithIncome struct {
	ID         int    `gorm:"column:id" json:"id"`

	Name     string `gorm:"column:name" json:"name"`
	UserName string `gorm:"column:user_name" json:"userName"`
	NickName string `gorm:"column:nick_name" json:"nickName"`
	Phone    string `gorm:"column:phone" json:"phone"`

	UserCount       int        `gorm:"user_count" json:"userCount"`
	Money           float64    `gorm:"money" json:"money"`

}
